﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Text;
using System.Data;
using SGC.BE;
using SGC.BL;
using SGC.BL.BL_CcuActualizarPlanAuditoria;
using SGC.BL.BL_CcuActualizarCheckListProcedimiento;

namespace SGC.Web.ModuloCalidad.Mantenimientos
{
    public partial class frmActualizarCheckListProcedimiento : System.Web.UI.Page
    {

        private BE_PlanAuditoria objPlan = null;
        private String strError = "";

        protected void Page_Load(object sender, EventArgs e)
        {
            objPlan = new BE_PlanAuditoria();
            if (!IsPostBack)
            {
                BE_Procedimiento objProc = (BE_Procedimiento)Session["Procedimiento"];
                String strDesProceso = Request.QueryString["DesProceso"];
                txt_CodigoProceso.Text = objProc.CODIGO_PROCESO;
                txt_DescripProceso.Text = strDesProceso;

                ddl_Procedimientos.SelectedIndexChanged -= new System.EventHandler(this.ddl_Procedimientos_SelectedIndexChanged);

                ddl_Procedimientos.DataSource = BL_CcuActualizarPlanAuditoria.obtenerProcedimientos_DL(objProc);
                ddl_Procedimientos.DataTextField = "NOMBRE";
                ddl_Procedimientos.DataValueField = "CODIGO_PROC";
                ddl_Procedimientos.DataBind();
                if (!string.IsNullOrEmpty(objProc.CODIGO_PROC.Trim()))
                {
                    ddl_Procedimientos.SelectedValue = objProc.CODIGO_PROC;
                    ddl_Procedimientos.Enabled = false;
                }

                ddl_Procedimientos_SelectedIndexChanged(new Object(), new EventArgs());
                ddl_Procedimientos.SelectedIndexChanged += new System.EventHandler(this.ddl_Procedimientos_SelectedIndexChanged);
                btn_buscar_Click(new Object(), new EventArgs());
            }
        }

        protected void rb_ElegirAuditor_CheckedChanged(object sender, EventArgs e)
        {

        }

        protected void btn_buscar_Click(object sender, EventArgs e)
        {
            gv_CheckLists.DataSource = BL_CcuActualizarCheckListProcedimiento.obtenerCheckList_BL(txt_Buscar.Text.Trim());
            gv_CheckLists.DataBind();
        }

        protected void cmd_GrabarPlan_Click(object sender, EventArgs e)
        {

        }

        protected void cmd_Salir_Click(object sender, EventArgs e)
        {

        }

        protected void ddl_Procedimientos_SelectedIndexChanged(object sender, EventArgs e)
        {
            listarChecksRegistrados();
        }

        private void listarChecksRegistrados(){
            String strProcedimientos = "'" + ddl_Procedimientos.SelectedValue + "'";
            BE_CheckListProcedimiento objProcChecklist = new BE_CheckListProcedimiento();
            objProcChecklist.CODIGO_PROC = strProcedimientos;
            gv_CheckListRegistrado.DataSource = BL_CcuActualizarPlanAuditoria.obtenerProcedimientosChecklist_BL(objProcChecklist);
            gv_CheckListRegistrado.DataBind();
        }

        protected void btn_Agregar_Click(object sender, EventArgs e)
        {
            String strCodCheck = "";
            foreach (GridViewRow fila in gv_CheckLists.Rows)
            {
                RadioButton rbt = (RadioButton)fila.FindControl("rb_ElegirCheck");
                if (rbt.Checked)
                {
                    strCodCheck = fila.Cells[1].Text;                    
                    break;
                }
            }

            if (!string.IsNullOrEmpty(strCodCheck))
            {
                if (txt_ValorEsperado.Text.Trim().Equals(""))
                {
                    enviarAlerta("Se debe ingresar el valor esperado.");
                    txt_ValorEsperado.Focus();
                    return;
                }
                BE_CheckListProcedimiento objCheckProc = new BE_CheckListProcedimiento();
                objCheckProc.CODIGO_CHECK = strCodCheck;
                objCheckProc.CODIGO_PROC = ddl_Procedimientos.SelectedValue;
                objCheckProc.VALOR_ESPERADO = txt_ValorEsperado.Text;
                int intResultadoDetalle = BL_CcuActualizarCheckListProcedimiento.actualizarChecklistProcedimiento_BL(objCheckProc, true, ref strError);
                if (intResultadoDetalle > 0)
                {
                    enviarAlerta("Se actualizó el registro correctamente.");
                    listarChecksRegistrados();                    
                }
            }
            else
            {
                enviarAlerta("Debe seleccionar un registro para agregar al procedimiento.");
            }
         
        }

        protected void btn_Eliminar_Click(object sender, EventArgs e)
        {
            String strCodCheck = "";
            foreach (GridViewRow fila in gv_CheckListRegistrado.Rows)
            {
                RadioButton rbt = (RadioButton)fila.FindControl("rb_ElegirCheckSave");
                if (rbt.Checked)
                {
                    strCodCheck = fila.Cells[1].Text;
                    break;
                }
            }

            if (string.IsNullOrEmpty(strCodCheck.Trim()))
            {
                enviarAlerta("Debe seleccionar un procedimiento a eliminar.");
                return;
            }

            BE_CheckListProcedimiento objCheckProc = new BE_CheckListProcedimiento();
            objCheckProc.CODIGO_CHECK = strCodCheck;
            objCheckProc.CODIGO_PROC = ddl_Procedimientos.SelectedValue;
            objCheckProc.VALOR_ESPERADO = txt_ValorEsperado.Text;
            int intResultadoDetalle = BL_CcuActualizarCheckListProcedimiento.actualizarChecklistProcedimiento_BL(objCheckProc, false, ref strError);
            if (!strError.Trim().Equals(""))
            {
                enviarAlerta("El registro seleccionado se encuentra asociado.");
                return;
            }
            listarChecksRegistrados();
        }

        private void enviarAlerta(String Mensaje)
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "_mensaje", "alert('" + Mensaje + "');", true);
        }

        protected void btn_Salir_Click(object sender, EventArgs e)
        {
            StringBuilder strBuilder = new StringBuilder();
            strBuilder.Append("~/ModuloCalidad/Mantenimientos/fmrConsultarCheckListProcedimiento.aspx");
            Response.Redirect(strBuilder.ToString());
        }
           
    }
}